#include <stdio.h>

/*全局变量：变量全局可用（范围广 慎用）*/
int k = 0;

int add(int a,int b)    //每个函数都有自己独立的一块内存，称为函数栈（函数结束时自动销毁）
{
    /*static关键字：（修饰的变量放在静态全局区，程序开始时创建，结束时销毁）
        修饰局部变量：（局部静态变量）
            1.只会初始化1次
            2.生命周期直到程序结束

        修饰全局变量：（全局静态变量）使全局变量只在其定义的文件中可见，比extern优先级更高（可以防止使用全局变量时的不安全问题）
        
        修饰全局函数：使函数只在本文中可见*/
        
    static int count = 0;   //局部静态变量（变量被static修饰，虽然生命周期延长了，但作用域还是在函数里面，出了函数不认）
    count++;
    printf("%d\n",count);
    k++;
    return a + b;
}

//extern：声明变量来自文件外部
extern int count;   //使用跨文件的全局变量时需要外部声明一下

//局部变量：在一个作用域内生效，出了作用域内存销毁的变量
int main()  //称main函数的函数栈为系统栈
{
    //局部变量
    int c = add(1,2);
    add(1,2);
    k++;
    printf("k = %d\n",k);

    return 0;
}